As may be appreciated, in the computer-related art, an object model is a collection of computer-type objects that are instantiated in a memory of a computer or the like, and includes state information relating to the objects, properties of objects, methods that can be performed with regard to the objects, relationships between the objects, and other pertinent information necessary to allow the object model to function to achieve an overall goal. Such object model may be created by or in combination with a particular computer application for execution thereon, or may be created by another computer application to be executed on the particular computer application.
Categories and varieties of such object model are many and varied. For example, the object model may represent the architectural specifications for a building as created by an architectural application. Similarly, the object model may represent the electrical and plumbing specifications for such building as created by a building services application. Likewise, the object model may represent design specifications for controlling a machine to produce a particular object as created by a machine-control application.
Significantly, at least with regard to the present disclosure, an object model in a memory of a computer or the like may be persisted as an object model document. That is, the present state of an object model may be saved in the form of a computer data file or the like and then re-loaded at a later time to re-create the object model in its former state. Methods and mechanisms for persisting an object model are known or should be apparent to the relevant public and therefore need not be described herein in any detail.
Note that an object model may be persisted as an object model document by a designer of the object model who wishes to suspend designing activity and then continue with such designing activity at a later time, for example. More notably, once the object model has been designed, it may be the case that the designer or a master of the designer may wish to persist the object model document and then sell, license, or otherwise convey (hereinafter ‘sell’) the persisted object model document as the object model to one or more interested purchasers. The purchaser might then apply the corresponding application to act upon information represented by the object model document.
One way to persist an object model as an object model document is to save the object model as an extensible markup language (XML) type document. However, it is to be appreciated that an XML-type object model document is in effect human-readable source code that describes the object model, where such source code can be viewed with ease by a purchaser and perhaps modified thereby. That is, such XML-type document containing the source code for the object model is not obfuscated. As may be appreciated, then, a seller of such an object model would not likely in fact sell the object model in such non-obfuscated form, because upon examination of the source code of the object model, the steps leading to ultimate achievement of whatever it is a particular object model document is designed to achieve would become evident. Thus, in many cases it is desirable to withhold such information while providing the ability to achieve the ultimate result.
Another way to persist an object model as an object model document is to save the object model as a programming-language type document, such as for example as a C-type programming language document. Of course, it is to be appreciated that a C-type programming language object model document is, like an XML-type object model document, in effect source code that describes the object model, where such source code is non-obfuscated and can be viewed with ease. Thus, and again, a seller of such an object model would not likely in fact sell the object model in such non-obfuscated form.
However, such C-type programming language object model document can be compiled by way of an appropriate compiler into an executable file. Moreover, and significantly, such executable file contains machine code which is in fact by its nature difficult to understand/obfuscated and if viewed or otherwise examined likely will not reveal the aforementioned source code for the object model embodied therein.
Such an executable file with the obfuscated object model embodied therein would seem to be amenable to the seller of such an object model. Critically, though, such executable file is designed to be executed upon the command of a corresponding computer application to instantiate the object model therein in a memory of a computer. More to the point, such computer application also very likely includes all functionality necessary to persist or save the instantiated object model in some non-obfuscated form, such as for example the aforementioned XML-type object model document or the aforementioned C-type programming language object model document.
Accordingly, a need exists for a method and mechanism that allows an object model to be persisted as an object model document, where the object model resides within the object model document in an obfuscated form and cannot be saved or otherwise improperly revealed in a non-obfuscated form. Moreover, a need exists for such a method and mechanism whereby the object model document with the obfuscated object model therein can be employed by any appropriate application without any special modification thereto.